// pages/consult/search/search.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    resultsarr: [],
    isLoading: false,
    
    // 咨询师等级
    consultLv: [],          // 等级列表
    priceRanges: [],        // 等级名称数组
    selectedValue: "",      // 选中的等级名称
    selectedId: '',         // 选中的等级ID
    
    // 地域
    areaData: {
      code: ["110000", "110100"],
      value: ["北京市", "北京市"],
      address: "北京市北京市"
    },

    // 擅长领域
    field: [],              // 擅长领域列表
    selectedFields: [],     // 选中的擅长领域数组

    // 性别
    selectedGender: '',     // 选中的性别
    
    // 咨询方式
    chargeType: [],         // 咨询方式列表
    chargeTypeIndex: -1,    // 选中的咨询方式索引
    chargeTypeId: null      // 选中的咨询方式ID
  },

  // 获取所有数据
  getData() {
    let that = this;
    this.setData({ isLoading: true });

    // 获取擅长领域
    wx.request({
      url: "http://120.26.112.194:80/api/consultants/selectAllAreas",
      success(res) {
        if(res.data?.code === 200) {
          // 添加"无"选项和 checked 属性
          const fieldData = [
            { areaId: -1, areaName: '无', checked: false },
            ...res.data.data.map(item => ({
              ...item,
              checked: false
            }))
          ];
          that.setData({ field: fieldData });
        }
      }
    });

    // 获取咨询师等级
    wx.request({
      url: "http://120.26.112.194:80/api/consultants/selectAllConsultantLevel",
      success(res) {
        if(res.data?.code === 200) {
          const levelData = res.data.data;
          that.setData({
            consultLv: levelData,
            priceRanges: levelData.map(item => item.consultantLevelName)
          });
        }
      }
    });

    // 获取咨询方式
    wx.request({
      url: "http://120.26.112.194:80/api/consultants/selectAllChargeStandardType",
      success(res) {
        if(res.data?.code === 200) {
          that.setData({
            chargeType: res.data.data
          });
        }
      }
    });
  },

  // 表单提交
  formSubmit() {
    // 打印所有选中的值
    console.log('---选中的值---');
    console.log('地域：', this.data.areaData.address);
    console.log('擅长领域：', this.data.selectedFields);
    console.log('咨询师等级：', this.data.selectedId);
    console.log('性别：', this.data.selectedGender);
    console.log('咨询方式：', this.data.chargeTypeId);
    console.log('-------------');

    // 如果选中了"无"，则传空字符串，否则将数组转换为逗号分隔的字符串
    const areaNames = this.data.selectedFields.includes('无') ?
                     '' :
                     this.data.selectedFields.join(',');

    // 计算擅长数量
    const areaNamesCount = this.data.selectedFields.includes('无') ?
                        0 :
                        this.data.selectedFields.length;

    const params = {
      address: this.data.areaData.address || '',     // 使用拼接后的省市字符串
      areaNames: areaNames,                          // 将数组转换为逗号分隔的字符串
      areaNamesCount: areaNamesCount,                // 添加擅长数量
      levelName: this.data.selectedId || '',         // 咨询师等级
      gender: this.data.selectedGender || '',        // 性别
      chargeTypeName: this.data.chargeTypeId || ''   // 咨询方式
    };

    // 移除空值
    Object.keys(params).forEach(key => {
      if (params[key] === null || params[key] === undefined || params[key] === '') {
        delete params[key];
      }
    });

    console.log('发送的请求参数：', params);

    wx.request({
      method: 'get',
      url: "http://120.26.112.194:80/api/consultants/selectDynamicQueries",
      data: params,
      success: (res) => {
        console.log('接口返回原始数据：', res.data);
        if(res.data && res.data.code === 200) {
          if(res.data.data && res.data.data.length > 0) {
            console.log('查询成功：', res.data);
            let consultantIds = res.data.data.map(item => item.consultantId);
            this.setData({
              resultsarr: consultantIds
            });

            // 将结果数组转为字符串并进行编码

            let resultsarrStr = JSON.stringify(this.data.resultsarr);
            wx.navigateTo({
              url: '../zixunshilie/zixunshilie?id=' + resultsarrStr,
              fail: function(err) {
                console.error('页面跳转失败：', err);
              }
            });
          } else {
            wx.showToast({
              title: '暂无符合条件的咨询师',
              icon: 'none'
            });
          }
        }
      },
      fail(err) {
        console.error('请求失败:', err);
        wx.showToast({
          title: '网络请求失败',
          icon: 'none'
        });
      }
    });
  },

  // 重置表单
  formReset() {
    this.setData({
      labels: this.data.labels.map(item => ({ ...item, checked: false })),
      labelsSelected: [],
      sex: this.data.sex.map((item, index) => ({ ...item, checked: index === 0 })),
      sexSelected: [],
      way: this.data.way.map(item => ({ ...item, checked: false })),
      waySelected: [],
      areaData: { code: [], value: [] },
      levelIndex: 0,
      levelSelected: { name: "不限", value: 0 }
    });
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 初始化默认地址
    this.setData({
      areaData: {
        code: ["110000", "110100"],
        value: ["北京市", "北京市"],
        address: "北京市北京市"
      }
    });

    // 获取其他数据
    this.getData();
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  },

  // 擅长领域选择
  handleExpertiseChange(e) {
    let values = e.detail.value;
    let field = this.data.field;
    let selectedFields = [];

    // 获取当前点击的选项
    const currentValue = values[values.length - 1];

    // 如果点击的是"无"选项
    if (currentValue === '-1') {
      // 取消所有其他选项，只选中"无"
      field.forEach(item => {
        item.checked = item.areaId === -1;
        if (item.checked) {
          selectedFields.push(item.areaName);
        }
      });
    }
    // 如果点击的是其他选项
    else {
      // 取消"无"的选中状态
      field[0].checked = false;

      // 获取除"无"以外的所有选中值
      values = values.filter(v => v !== '-1');

      // 限制最多选择3个
      if (values.length > 3) {
        values = values.slice(-3);
      }

      // 更新选中状态
      field.forEach(item => {
        if (item.areaId !== -1) { // 跳过"无"选项
          item.checked = values.includes(item.areaId.toString());
          if (item.checked) {
            selectedFields.push(item.areaName);
          }
        }
      });
    }

    this.setData({
      field,
      selectedFields
    });

    console.log('当前选中的擅长领域：', selectedFields);
  },

  // 地域选择处理
  setAreaData(e) {
    const province = e.detail.value[0];
    const city = e.detail.value[1];
    const address = province + city;

    this.setData({
      areaData: {
        code: e.detail.code,
        value: e.detail.value,
        address: address
      }
    });
    console.log('选择的地区：', address);
  },

  // 修改确定按钮中的地域参数
  queding() {
    const params = {
      address: this.data.areaData.value[1] || '',  // 使用城市名称
      areaNames: this.data.selectedFields,
      levelName: this.data.selectedId,
      gender: this.data.selectedGender,
      chargeTypeName: this.data.chargeTypeId
    };

    // ... 其余代码保持不变
  },

  // 修改重置方法
  clear() {
    this.setData({
      areaData: {
        code: ["110000", "110100"],
        value: ["北京市", "北京市"],
        address: "北京市北京市"
      },
      selectedValue: "",
      selectedId: '',
      field: this.data.field.map(item => ({ ...item, checked: false })),
      selectedFields: [],
      selectedGender: '',
      chargeTypeIndex: -1,
      chargeTypeId: ''
    });
  },

  // 性别操作
  selectGender(e) {
    const selectedGender = e.currentTarget.dataset.gender;
    this.setData({
      selectedGender
    });
    console.log('选中的性别：', selectedGender);
  },

  // 咨询方式操作
  chargeTypeSelect(e) {
    const index = e.currentTarget.dataset.index;
    const selectedItem = this.data.chargeType[index];

    this.setData({
      chargeTypeIndex: index,
      chargeTypeId: selectedItem.chargeTypeName
    });
    console.log('选中的咨询方式：', selectedItem.chargeTypeName);
  },

  // 咨询师等级操作
  handlePickerChange(e) {
    const index = e.detail.value;
    const selectedItem = this.data.consultLv[index];

    this.setData({
      selectedValue: selectedItem.consultantLevelName,  // 用于显示
      selectedId: selectedItem.consultantLevelName      // 用于传参
    });
    console.log('选中的咨询师等级：', selectedItem.consultantLevelName);
  }
})